Skip to content

Conversation

@vchuravy
Copy link
Member

VPlan is the restructure of llvm auto vectorization capabilities, with the long-term goal of enabling outer loop vectorization.

Currently it is turned off be default, and locally I am seeing assertion errors with it.

@oscardssmith
Copy link
Member

IIUC Vplan needs LLVM 20 to have a cost model which is fairly necessary to keep it from generating tons of gather/scatter instructions.

@Zentrik
Copy link
Member

Zentrik commented Feb 22, 2025

Build looks like it works better on llvm 20, e.g. see https://github.com/Zentrik/llvm_julia_tester/actions/runs/13470189047?pr=59 (though possibly because I'm only compiling with JULIA_CPU_TARGET="generic;sandybridge,-xsaveopt,clone_all;haswell,-rdrnd,base(1)" due to #55844)

Never mind, I screwed up enabling VPlan, rebuilding.

@Zentrik
Copy link
Member

Zentrik commented Feb 23, 2025

Looks like Linux builds at least on 20, seeing lots of assertions hit in tests but llvm/llvm-project#121518 should fix that.

@giordano
Copy link
Member

That's already backported to v20 though: llvm/llvm-project#126718, no?

@Zentrik
Copy link
Member

Zentrik commented Feb 23, 2025

I would presume not to our branch though

@giordano
Copy link
Member

Right, but it is now, I just rebased https://github.com/JuliaLang/llvm-project/commits/julia-release/20.x/ on latest release/20.x

@vchuravy
Copy link
Member Author

The fun part is that as far as I understand it, loops still need a manual loopinfo.vectorize annotation. So this is just turning on the option for outer loop vectorization and we start hitting assertions.

@Zentrik
Copy link
Member

Zentrik commented Feb 26, 2025

Unfortunately, looks like this won't work in 20, llvm/llvm-project#128425, and Julia doesn't even build on head.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants